using Abp.Application.Services.Dto;
using Mt.Site.Application.Taxonomys.Dto;
using Mt.Site.Application.Taxonomys.FrontDto;
using System;
using System.Collections.Generic;
using System.Threading.Tasks;

namespace Mt.Site.Application.Taxonomys
{
    public interface ITaxonomyFrontAppService:IFrontEndAppService
    {
        /// <summary>
        /// 树结构的数据源
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        Task<List<TaxonomyFrontItem>> GetTaxonomyCollectionsAsync(EntityDto<Guid> input);

        /// <summary>
        /// 拉取一级数据项
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        Task<List<TaxonomyItemLevel1Dto>> GetTaxonomyItemLevel1(EntityDto<Guid> input);

        /// <summary>
        /// 联级菜单 ：拉取下级菜单
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        Task<List<TaxomonyItemNext>> GetTaxonomyLevelNext(EntityDto<Guid> input);


        Task<List<TaxomonyItemNext>> GetTaxonomyItemByIdsAsync(GetTaxonomyItemInput input);


        /// <summary>
        /// 联级菜单 ：拉取下级菜单
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        Task<List<TaxonomyFrontItem>> GetTaxonomyTreeByParentIdAsync(GetTaxonomyTreeByParentIdInput input);


        /// <summary>
        /// 联级菜单 ：拉取下级菜单
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        Task<List<TaxonomyItemDataOut>> GetTaxonomyLevelNextTree(GetTaxonomyLevelNextTreeInput input);
    }
}
